package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.UserTaskStar;

/**
 * 用户任务收藏Service接口
 *
 * @author ruoyi
 * @date 2024-07-03
 */
public interface IUserTaskStarService
{
    /**
     * 查询用户任务收藏
     *
     * @param id 用户任务收藏主键
     * @return 用户任务收藏
     */
    public UserTaskStar selectUserTaskStarById(Long id);

    /**
     * 查询用户任务收藏列表
     *
     * @param userTaskStar 用户任务收藏
     * @return 用户任务收藏集合
     */
    public List<UserTaskStar> selectUserTaskStarList(UserTaskStar userTaskStar);

    /**
     * 新增用户任务收藏
     *
     * @param userTaskStar 用户任务收藏
     * @return 结果
     */
    public int insertUserTaskStar(UserTaskStar userTaskStar);

    /**
     * 修改用户任务收藏
     *
     * @param userTaskStar 用户任务收藏
     * @return 结果
     */
    public int updateUserTaskStar(UserTaskStar userTaskStar);

    /**
     * 批量删除用户任务收藏
     *
     * @param ids 需要删除的用户任务收藏主键集合
     * @return 结果
     */
    public int deleteUserTaskStarByIds(Long[] ids);

    /**
     * 删除用户任务收藏信息
     *
     * @param id 用户任务收藏主键
     * @return 结果
     */
    public int deleteUserTaskStarById(Long id);

    /**
     * 切换任务收藏状态（收藏/取消收藏）
     *
     * @param userId 用户ID
     * @param taskId 任务ID
     * @return 结果（1收藏，0取消收藏）
     */
    public int toggleTaskStar(Long userId, Long taskId);

    /**
     * 检查用户是否已收藏某个任务
     *
     * @param userId 用户ID
     * @param taskId 任务ID
     * @return true已收藏，false未收藏
     */
    public boolean checkUserStarredTask(Long userId, Long taskId);

    /**
     * 根据任务ID切换收藏状态
     *
     * @param taskId 任务ID
     * @return 收藏总数
     */
    int toggleStar(Long taskId);

    /**
     * 根据用户ID统计收藏数量
     *
     * @param userId 用户ID
     * @return 收藏数量
     */
    int countByUserId(Long userId);
} 